知道為什麼標題會叫做「牙起來」嗎?真的開發就會知道了Airflow 的 debug 和 testing 都是比較麻煩的,會越用越抓狂,這兩天會整理我的方式,如果有更好的方式,拜託跟我說
import pendulum
from datetime import datetime
import requests
from airflow.decorators import dag, task
local_tz = pendulum.timezone("Asia/Taipei")
@dag(
dag_id="show_today_activity",
schedule_interval="0 9 * * *",
start_date=datetime(2023, 10, 1, tzinfo=local_tz),
catchup=False
)
def run():
@task
def today_activity():
res = requests.get("https://www.boredapi.com/api/activity")
return now + ":" + res.text
today_activity()
run()
catchup=False
👍requests.get({url})
requests 模組可以發送 http requests 然後拿到 responsehttps://www.boredapi.com/api/activity
是我去找的開源 API,就是設計給今天不知道要幹嘛,可以call api,他就會用 json 回傳一個推薦的活動,可以直接點擊網址,每次會不一樣,回傳格式如下:{
"activity":"Listen to a new podcast",
"type":"relaxation",
"participants":1,
"price":0.05,
"link":"",
"key":"4124860",
"accessibility":0.12
}
這次推薦我聽一個新的podcast,類別是 relax,還以有一些其他的資訊~
airflow dags list
airflow tasks list {dag id}
--tree
參數,可以看到 tasks 之間更詳細的階層關係(the hierarchy of tasks)airflow tasks list {dag id} --tree
python ~/airflow/dags/tutorial.py
airflow tasks test <dag_id> <task_id> <date(e.g.20230101)> -t <parameter: json TYPE"{"id":"1"}">
如果想要拿到這些參數,可以這樣 access
def get_json_arg(**kwargs):
id = kwargs["params"]["id"]
airflow dags test {dag id} {date}